from django.db import models


# from tinymce.models import HTMLField
# pip3 install django-tinymce
# 先生成应用 python manage.py startapp booktste
# 设置数据里 setting
# 创建空数据库 create schema  `booktest` DEFAULT CHARACTER SET utf8;
# setting 中加入应用名'booktest'
# 定义以下类之后生成迁移 python manage.py makemigrations ，自动生成 00001_initial.py，为数据库
# 迁移 python manage.py migrate
# 当执行 python manage.py makemigrations 出现错误：TypeError: init() missing 1 required positional argument: ‘on_delete’
#   添加 book = models.ForeignKey('BookInfo', on_delete=models.CASCADE)
# 提示decode错误 query = query.decode(errors=‘replace’) 将decode修改为encode即可
# 定义url: index类
# from django.urls import path
# from . import views
# # 定义自己的 URL
# urlpatterns = [path('', views.index, name='index'),]
# 创建模板文件,public.html
# views 中修改返回值,会返回给index.html
# 运行 python manage.py runserver

# 富文本编辑器需要安装 pip3 install django-tinymce


# class HeroInfo(models.Model):
#     hcontent = HTMLField()

class HeroInfo(models.Model):
    btitle = models.CharField(max_length=20)
    bname = models.CharField(max_length=20)


class TusharDate(models.Model):
    # 主键
    id = models.AutoField(primary_key=True)
    # 股票代码
    tscode = models.CharField(max_length=20)

    # 开始时间
    startTime = models.CharField(max_length=50)
    # 结束时间
    endTime = models.CharField(max_length=50)
    # macd f
    macdF = models.CharField(max_length=20)
    # macd sl
    macdSL = models.CharField(max_length=20)
    # macd si
    macdSI = models.CharField(max_length=20)
    # 买参数
    buy = models.CharField(max_length=20)
    # 卖
    sell = models.CharField(max_length=20)
    # 买入时间
    buyTime = models.CharField(max_length=20)
    # 卖出时间
    sellTime = models.CharField(max_length=20)
    # 买入价格
    buyPrice = models.CharField(max_length=20)
    # 卖出价格
    sellPrice = models.CharField(max_length=20)
    # 交易获利
    tradProfit = models.FloatField()
    # tradProfit = models.DecimalField('tradProfit', decimal_places=2, max_digits=8)
    # 成功率
    successRatio = models.FloatField()

    # 盈利率
    profitability = models.FloatField()

    # successRatio = models.DecimalField('successRatio', max_digits=8, decimal_places=


# 交易详情
class DealDetail(models.Model):
    # 主键
    id = models.AutoField(primary_key=True)
    # 外键 TusharDate
    tusharDate = models.ForeignKey(TusharDate, on_delete=models.CASCADE)
    # 股票代码
    tscode = models.CharField(max_length=20)
    # 买入时间
    buyTime = models.CharField(max_length=20)
    # 卖出时间
    sellTime = models.CharField(max_length=20)
    # 买入价格
    buyPrice = models.FloatField()
    # 卖出价格
    sellPrice = models.FloatField()
    # 交易获利
    tradProfit = models.FloatField()
    # 盈利率
    profitability = models.FloatField()

    # tradProfit = models.DecimalField('tradProfit', decimal_places=2, max_digits=8)

    # 股票交易信息


class history_k_data(models.Model):
    # 交易所行情日期 	格式：YYYY-MM-DD
    date = models.CharField(max_length=20)
    # 股票代码
    code = models.CharField(max_length=20)

    # 接下来设置联合主键
    class Meta:
        unique_together = ("date", "code")

    # 今开盘价格 	精度：小数点后4位；单位：人民币元
    open = models.CharField(max_length=20)
    #  最高价 	精度：小数点后4位；单位：人民币元
    high = models.CharField(max_length=20)
    # 最低价 	精度：小数点后4位；单位：人民币元
    low = models.FloatField()
    # 今收盘价 	精度：小数点后4位；单位：人民币元
    close = models.FloatField()
    # 昨日收盘价
    preclose = models.FloatField()
    #  	成交量（累计 单位：股）
    volume = models.FloatField()
    # 成交金额（单位：人民币元）
    amount = models.FloatField()
    # 复权状态(1：后复权， 2：前复权，3：不复权）
    adjustflag = models.FloatField()
    # 换手率
    turn = models.FloatField()
    # 交易状态(1：正常交易 0：停牌）
    tradestatus = models.FloatField()
    # 涨跌幅（百分比
    pctChg = models.FloatField()
    # 滚动市盈率
    peTTM = models.FloatField()
    # 滚动市销率
    psTTM = models.FloatField()
    # 滚动市现率
    pcfNcfTTM = models.FloatField()
    # 市净率
    pbMRQ = models.FloatField()
    # 是否ST
    isST = models.IntegerField()


# 股票指数交易信息
class stockIndex(models.Model):
    # 主键
    id = models.AutoField(primary_key=True)
    # 交易所行情日期 	格式：YYYY-MM-DD
    date = models.CharField(max_length=20)
    # 股票代码
    code = models.CharField(max_length=20)
    # 今开盘价格 	精度：小数点后4位；单位：人民币元
    open = models.CharField(max_length=20)
    #  最高价 	精度：小数点后4位；单位：人民币元
    high = models.CharField(max_length=20)
    # 最低价 	精度：小数点后4位；单位：人民币元
    low = models.FloatField()
    # 今收盘价 	精度：小数点后4位；单位：人民币元
    close = models.FloatField()
    # 昨日收盘价
    preclose = models.FloatField()
    #  	成交量（累计 单位：股）
    volume = models.FloatField()
    # 成交金额（单位：人民币元）
    amount = models.FloatField()
    # 涨跌幅（百分比
    pctChg = models.FloatField()


#
class stockInfo(models.Model):
    # 主键
    id = models.AutoField(primary_key=True)
    # 股票代码
    code = models.CharField(max_length=20)
    # 证券名称
    code_name = models.CharField(max_length=20)
    # 上市日期
    ipoDate = models.CharField(max_length=20)
    # 退市日期
    outDate = models.CharField(max_length=20)
    # 证券类型，其中1：股票，2：指数,3：其它
    type = models.IntegerField()
    # 上市状态，其中1：上市，0：退市
    status = models.IntegerField()


class stock_basic(models.Model):
    # 主键
    id = models.AutoField(primary_key=True)
    # 股票代码
    code = models.CharField(max_length=20)
    symbol = models.CharField(max_length=20)
    # 股票名称
    name = models.CharField(max_length=20)
    # 所在地域
    area = models.CharField(max_length=20)
    # 所属行业
    industry = models.CharField(max_length=20)
    # 股票全称
    fullname = models.CharField(max_length=20)
    # 英文全称
    enname = models.CharField(max_length=20)
    # 市场类型 （主板/中小板/创业板/科创板）
    market = models.CharField(max_length=20)
    # 交易所代码
    exchange = models.CharField(max_length=20)
    # 交易货币
    curr_type = models.CharField(max_length=20)
    # 上市状态： L上市 D退市 P暂停上市
    list_status = models.CharField(max_length=20)
    # 上市日期
    list_date = models.CharField(max_length=20)
    # 退市日期
    delist_date = models.CharField(max_length=20)
    # 是否沪深港通标的，N否 H沪股通 S深股通
    is_hs = models.CharField(max_length=20)


# cctv新闻
class cctv_news(models.Model):
    # 主键
    id = models.AutoField(primary_key=True)
    # 股票代码
    date = models.CharField(max_length=20)
    title = models.CharField(max_length=200)
    # 股票名称
    content = models.TextField()


# 数字货币信息
class coinInfo(models.Model):
    # 主键
    id = models.AutoField(primary_key=True)
    # 代码
    coin = models.CharField(max_length=20)
    # 英文名称
    en_name = models.CharField(max_length=200)
    # 中文名称
    cn_name = models.CharField(max_length=20)
    # 发行时间
    issue_date = models.CharField(max_length=200)
    # 发行价格
    issue_price = models.FloatField()
    # 发行总量
    amount = models.FloatField()
    # 流通总量
    supply = models.FloatField()
    # 算法原理
    algo = models.CharField(max_length=200)
    # 发行地区
    area = models.CharField(max_length=200)
    # 标签分类
    labels = models.CharField(max_length=20)
    # 描述
    desc = models.TextField()

    # 指数基本信息


